package com.cougil.uoc.seghismed.action;

import java.util.HashSet;
import java.util.Set;

import com.cougil.uoc.seghismed.business.PacientClientService;
import com.cougil.uoc.seghismed.model.Historial;
import com.cougil.uoc.seghismed.model.Pacient;
import com.cougil.uoc.seghismed.model.Visita;
import com.cougil.uoc.seghismed.model.struts.Mode;
import com.opensymphony.xwork2.Action;

public class PacientAction extends SeghismedAction {

	private static final long serialVersionUID = 4129893374494860258L;

	private Historial historial;

	private Integer id;
	private Pacient pacient;
	private Visita visita;

	// visites associades l'historial
	private Set<Visita> visitesProtegides = new HashSet<Visita>();

	public PacientAction() {
	}

	/* (non-Javadoc)
	 * @see com.cougil.uoc.seghismed.action.SeghismedAction#getClientService()
	 */
	@Override
	protected PacientClientService getClientService() {
		return (PacientClientService) this.clientService;
	}

	public Integer getId() {
		return this.id;
	}

	public Pacient getPacient() {
		return this.pacient;
	}

	/**
	 * @return Retorna el valor de la propietat visita
	 */
	public Visita getVisita() {
		return this.visita;
	}

	/**
	 * @return Retorna el valor de la propietat visitesProtegides
	 */
	public Set<Visita> getVisitesProtegides() {
		return this.visitesProtegides;
	}

	/**
	 * @param Estableix historial com a valor de la propietat historial
	 */
	public void setHistorial(Historial historial) {
		this.historial = historial;
	}

	public void setId(Integer id) {
		this.id = id;
	}


	public void setPacient(Pacient p) {
		this.pacient = p;
	}

	/**
	 * @param Estableix visitesProtegides com a valor de la propietat visitesProtegides
	 */
	public void setVisitesProtegides(Set<Visita> visitesProtegides) {
		this.visitesProtegides = visitesProtegides;
	}

	public String showHistorial() {
		this.setMode(Mode.SHOW, "historial");
		// tornem a associar el pacient, per poder mostrar com a mínim les seves dades principals
		this.pacient = (Pacient) this.getClientService().getUsuari();
		// consultem l'historial
		this.historial = this.getClientService().consultarHistorial();
		// i desxifrem les visites protegides a mostrar
		this.visitesProtegides = this.getClientService().desxifrarVisitesProtegides(this.historial,
				this.pacient);
		return Action.SUCCESS;
	}

	public String showPacient() {
		this.setMode(Mode.SHOW);
		this.pacient = this.getClientService().consultarPacient();
		return Action.SUCCESS;
	}

	public String showVisita() {
		this.setMode(Mode.SHOW, "visita");
		// tornem a associar el pacient, per poder mostrar com a mínim les seves dades principals
		this.pacient = (Pacient) this.getClientService().getUsuari();
		this.visita = this.getClientService().consultarVisita(new Visita(this.getId()));
		return Action.SUCCESS;
	}


}
